/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package prostagra;

import java.util.Iterator;
import obiekty.Gracz;
import obiekty.ObiektRuchomy;
import obiekty.Potwor;
import utils.Vector2D;
import zachowania.potwor.IdzDoPunktu;
import zachowania.potwor.ScigajGracza;

/**
 *Klasa mająca zarządzać strategią potworów w walce z graczem
 * @author Gandalf
 */
public class Zarzadzacz {
private int sumaZyc;
private int sumaLudkow;
private int sumaSynaps;
private int zycieGracza;
private Mapa map;

public Zarzadzacz(Mapa map)
{this.map=map;
    }
/**
 * Funkcja zbierająca dane wejściowe do systemu
 * */
private void liczZycie(){
   Iterator i = map.getObiektyRuchome().iterator();
    sumaZyc=0;
    sumaLudkow=0;
    sumaSynaps=0;
       while (i.hasNext())
                {
                    ObiektRuchomy o = (ObiektRuchomy) i.next();
                    sumaZyc+=o.getZycie();
                    Potwor pt = (Potwor)(o);
                    if(pt.getType()==3){
                        sumaSynaps++;}
                    
                }
   zycieGracza= map.getGracz().getZycie();
    
}


/**Funkcja decyzyjna,
 * 
 */

public void checkStrategy()
{liczZycie();
    
if (zycieGracza<20 && sumaLudkow>10& sumaZyc>15){
    alloutOffense();
}else if(zycieGracza>90 && sumaLudkow <5)
{alloutDefence();
}
else if(sumaSynaps>4){
    groupAttack();
}
}
/**Funkcja ustawiająca wszystkie potworki do atakowania gracza
 * 
  */
private void alloutOffense()
{
    Iterator i = map.getObiektyRuchome().iterator();
 while (i.hasNext())
                {
      ObiektRuchomy o = (ObiektRuchomy) i.next();
      Potwor pt=(Potwor)o;
      pt.zmienStan(new ScigajGracza());
 }

}
/**Funkcja ustawiająca wszystkie potworki do schowania się przed graczem
 * 
  */

private void alloutDefence()
{
Iterator i = map.getObiektyRuchome().iterator();
 while (i.hasNext())
                {
      ObiektRuchomy o = (ObiektRuchomy) i.next();
      Potwor pt=(Potwor)o;
      pt.setIdzDo(new Vector2D(0.0,0.0));
      pt.zmienStan(new IdzDoPunktu());
}
}
/**Funkcja ustawiająca wszystkich przywódców grup do atakowania gracza
 * 
  */

private void groupAttack()
{ Iterator i = map.getObiektyRuchome().iterator();
 while (i.hasNext())
                {
      ObiektRuchomy o = (ObiektRuchomy) i.next();
      Potwor pt=(Potwor)o;
      if (pt.getType()==3){
      pt.zmienStan(new ScigajGracza());}
 }
}


}
